/**************************************************************************************************************/
/********************************** FUNÇÕES DE REDIRECIONAMENTO DE PÁGINAS ************************************/
/**************************************************************************************************************/
var intervalCookie;
/*
/ DESCRICAO: inicia o loading panel
/ ESCOPO: página
/ DEPENDENCIAS: BlockUI
/ PARAMETROS:
*/
function iniciarLoading(elemento) {
if ($('.tooltip').length) {
$('.tooltip').tooltip('hide');
}
if (elemento) {
elemento.block({
baseZ: '99999999', message: '
Aguarde...

', fadeIn: 0, overlayCSS: {
backgroundColor: '#fff', opacity: 0.6, cursor: 'wait', padding: '30px'
}, css: { width: '250px', height: '70px' }
});
}
else {
$.blockUI({
baseZ: '99999999', message: ' Aguarde...

', css: {
width: '250px', height: '70px', left: '50%', margin: 'auto auto auto -125px', backgroundColor: '#fff'
}
});
}
}
/*
/ DESCRICAO: habilita o aviso de quando o usuário tenta sair da página sem finalizar o procedimento
*/
function habilitarAvisoLoading() {
$(window).on('beforeunload', function (e) {
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (!prm._processingRequest) {
return 'Deseja sair deste site?';
}
});
}
function habilitarAvisoFormulario(mensagem) {
$(window).on('beforeunload', function (e) {
return mensagem;
});
}
/*
/ DESCRICAO: finalizar o loading panel
/ ESCOPO: página
/ DEPENDENCIAS: BlockUI
/ PARAMETROS:
*/
function finalizarLoading(args, elemento, url) {
var finalizar = true;
if (args) {
var requestError = args.get_error();
if (requestError && requestError.name == 'Sys.WebForms.PageRequestManagerTimeoutException') {
finalizar = false;
window.location = url;
}
}
if (finalizar) {
if (elemento) {
elemento.unblock();
}
else {
$.unblockUI();
}
}
}
/*
/ DESCRICAO: desabilitar o aviso de quando o usuário tenta sair da página sem finalizar o procedimento
*/
function desabilitarAvisoLoading() {
$(window).unbind('beforeunload');
}
///Inicia o loading panel que irá durar enquanto o cookie não estiver expirado
function iniciarLoadingDownload() {
createCookie("cookieDownload", 1);
intervalCookie = setInterval(checarTerminoLoadingDownload, 1000);
iniciarLoading();
}
///Checa se o cookie expirou, caso tenha expirado finaliza o loading panel
function checarTerminoLoadingDownload() {
if (readCookie("cookieDownload") == null) {
finalizarLoading();
clearInterval(intervalCookie);
}
}
/*
/ DESCRICAO: chama a URL na própria página
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: URL - String com a URL a ser chamada
*/
function chamaURL(URL) {
window.location = URL;
}
/*
/ DESCRICAO: chama a URL na página pai
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: URL - String com a URL a ser chamada
*/
function chamaURL_NoPai(URL) {
window.opener.location = URL;
window.blur();
window.opener.focus();
}
/*
/ DESCRICAO: abre uma URL em uma nova página, verificando se a mesma foi bloqueada
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: URL - String com a URL a ser chamada
/ NOME - String com o nome da janela
/ FEATURES (OPCIONAL) - Caso o usuário faça uma chamada passando só dois parâmetros
/ um valor padrão é atribuido
*/
function chamaURL_NovaPagina(theURL, winName, features) {
var popUp;
if ((typeof features == "undefined") || (features == null)) {
features = 'width=945, height=650, resizable=yes, scrollbars=yes';
}
popUp = window.open(theURL, winName, features);
verificarBloqueador(popUp);
return popUp;
}
/*
/ DESCRICAO: verifica se o pop-up foi bloqueado
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: POPUP - Instancia do popup que será verificado
*/
function verificarBloqueador(popUp) {
if ((typeof popUp == "undefined") || (popUp == null)) {
alert("A tela para digitação do texto da mensagem abre em forma de 'POPUP'. Portanto, para continuar, é necessário que desabilite, no seu navegador, para o site da PUC, o bloqueador de 'POPUPS'.");
}
}
/**************************************************************************************************************/
/*********************** FUNÇÕES PARA CONTROLE E FORMATAÇÃO DA MODAL DE ALERT E CONFIRM ***********************/
/**************************************************************************************************************/
/*
/ DESCRICAO: exibe o alert modal nas aplicações
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: titulo - titulo do Modal
/ tipo - tipo da mensagem (sucesso, erro ou aviso) que define o css de formatação
/ msg - texto da mensagem
*/
function exibirAlertModal(titulo, tipo, msg) {
document.getElementById("pnlAlertModalBody").className = "modal-body pnlAlertModalTipo" + tipo;
document.getElementById("lblAlertModal").innerHTML = htmlDecode(msg);
document.getElementById("lblTituloAlert").innerHTML = titulo;
var footer = document.getElementById("pnlAlertModalFooter");
while (footer.firstChild) {
footer.removeChild(footer.firstChild);
}
adicionarBotao(footer, "Ok", "btn-ok");
//Exibe o conteúdo no modal
$('#pnlDialogAlert').on('shown.bs.modal', function (e) {
$('#pnlDialogAlert button[data-dismiss=modal]').focus();
}).modal({
show: true,
backdrop: 'static',
keyboard: false
});
}
/*
/ DESCRICAO: exibe o alert modal nas aplicações e redireciona para a url
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: titulo - titulo do Modal
/ tipo - tipo da mensagem (sucesso, erro ou aviso) que define o css de formatação
/ msg - texto da mensagem
/ URL - url para redirecionamento
*/
function exibirAlertModalRedirect(titulo, tipo, msg, URL) {
document.getElementById("pnlAlertModalBody").className = "modal-body pnlAlertModalTipo" + tipo;
document.getElementById("lblAlertModal").innerHTML = msg;
document.getElementById("lblTituloAlert").innerHTML = titulo;
var footer = document.getElementById("pnlAlertModalFooter");
while (footer.firstChild) {
footer.removeChild(footer.firstChild);
}
adicionarBotao(footer, "Ok", "btn-ok", function (e) { chamaURL(URL); });
//Exibe o conteúdo no modal
$('#pnlDialogAlert').on('shown.bs.modal', function (e) {
$('#pnlDialogAlert button[data-dismiss=modal]').focus();
}).modal({
show: true,
backdrop: 'static',
keyboard: false
});
}
/*
/ DESCRICAO: exibe o confirm modal nas aplicações
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: titulo - titulo do Modal
/ msg - texto da mensagem
/ URL - url para redirecionamento em caso de "Sim"
*/
function exibirConfirmModal(titulo, msg, URL) {
document.getElementById("pnlConfirmModalBody").className = "modal-body pnlConfirmModalTipoConfirm";
document.getElementById("lblConfirmModal").innerHTML = htmlDecode(msg);
document.getElementById("lblTituloConfirm").innerHTML = titulo;
var footer = document.getElementById("pnlConfirmModalFooter");
while (footer.firstChild) {
footer.removeChild(footer.firstChild);
}
adicionarBotao(footer, "Não", "btn-nao", function (e) { $('#pnlDialogConfirm').modal("hide"); e.preventDefault(); });
adicionarBotao(footer, "Sim", "btn-sim", function (e) { eval(URL); });
setTimeout(() =>
{
$('#pnlDialogConfirm').on('shown.bs.modal').modal({
show: true,
backdrop: 'static',
keyboard: false
});
}, 500);
}
/*
/ DESCRICAO: adiciona um elemento de botão no elemento pai recebido por parâmetro
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: pai - elemento pai ao qual o botão será adicionado
/ texto - texto do botão
/ acaoClique - ação a ser executada caso o usuário clique no botão
*/
function adicionarBotao(pai, texto, classe, acaoClique) {
var btnNovo = document.createElement("BUTTON");
var $btnNovo = $(btnNovo);
$btnNovo.addClass("btn btn-default " + classe);
$btnNovo.attr("type", "button");
$btnNovo.attr("data-dismiss", "modal");
$btnNovo.text(texto);
if (acaoClique) {
$btnNovo.on("click", acaoClique);
}
pai.appendChild(btnNovo);
}
/*
/ DESCRICAO: troca o foco do formulário
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: field - campo sendo preenchido
*/
function autotab(field) {
if (field.value.length == field.maxLength) {
$(":input:eq(" + parseInt($(":input").index(field) + 1) + ")").focus();
}
}
/*
/ DESCRICAO: obtém um parâmetro passado na URL
/ ESCOPO: página
/ DEPENDENCIAS: nenhuma
/ PARAMETROS: parameter - parâmetro a ser obtido
*/
function getParametroUrl(parameter) {
var loc = location.search.substring(1, location.search.length);
var param_value = false;
var params = loc.split("&");
for (i = 0; i < params.length; i++) {
param_name = params[i].substring(0, params[i].indexOf('='));
if (param_name == parameter) {
param_value = params[i].substring(params[i].indexOf('=') + 1)
}
}
if (param_value) {
return param_value;
}
else {
return false;
}
}
/*
/ DESCRICAO: Controla o abrir e fechar do panel "pnlExpande"
/ ESCOPO: página
*/
$(document).ready(function () {
/* Painéis de Expansão */
$(".pnlExpandeTitulo").click(function () {
$(this).next().toggleClass('esconde');
$(this).children('.pnlIcoExpandeFecha,.pnlIcoExpandeAbre').toggleClass('pnlIcoExpandeFecha pnlIcoExpandeAbre');
});
var $options =
{
// Delay de 0,5 segundos para abrir o tooltip e fechamento imediato
delay: { show: 500, hide: 0 },
container: "body",
selector: '[data-toggle=tooltip], .has-error input, .has-error select, .has-error .icoValidaErro, .has-error .RadComboBox, .has-error textarea',
trigger: 'hover'
}
$(".panel-sau").on("focusin focusout", setPanelSauAtivo);
$('body').tooltip($options);
$('#lblDepartamentosUsuario').on('click', function () {
$('#lblDepartamentosUsuario').tooltip('toggle');
});
$('#lblDepartamentosUsuario').on('shown.bs.tooltip', function () {
$(document).on('click', fechaTooltipDepto);
});
$('#lblDepartamentosUsuario').on('hidden.bs.tooltip', function () {
$(document).off('click', fechaTooltipDepto);
});
$(document).on('shown.bs.modal', '.modal', function (e) {
if ($('object:visible', this).length > 0 && $('object:visible', this)[0].contentWindow && !$('object:visible', this)[0].contentWindow.jQuery) {
$('object', this).get(0).contentWindow.print();
}
//Garante que ao abrir uma modal os controle atrás da modal não poderão ser clicados através do botão 'TAB'.
$('body input, body button, body a').each(function (i) {
if ($(this).attr('tabindex') == -1) {
//Os elementos que já estiverem com tab desabilidado não serão manipulados.
//A classe TabIndexDisabled serve como marcador para identificar estes elementos.
$(this).addClass("TabIndexDisabled");
}
else {
$(this).attr('tabindex', -1);
}
});
//Garante que pode navegar pelos controles na modal
$(this).find("input, button, a").each(function (i) { $(this).attr('tabindex', i + 1); });
});
$(document).on('hidden.bs.modal', '.modal', function (e) {
//Garante que ao fechar a modal o usuário possa navegar pelos controles usando o botão 'TAB'.
$('body input, body button, body a').each(function (i) {
if ($(this).hasClass("TabIndexDisabled")) {
$(this).removeClass("TabIndexDisabled");
}
else {
$(this).attr('tabindex', i + 1);
}
});
// Todas as modais que estiverem visiveis deverão receber a classe css modal-open.
// Isso se faz necessário pois ao aplicar o hidden em uma modal, todas as demais modais abertas, erroneamente, são afetadas pela remoção da classe css modal-open.
$('.modal:visible').length && $(document.body).addClass('modal-open');
});
$(document).on('click', '.rbtn_sau', function () {
radioButtonParentSelection();
});
});
function fechaTooltipDepto() {
$('#lblDepartamentosUsuario').tooltip('hide');
}
/*
/ DESCRICAO: Evento usado na RADDROPDOWNTREE de forma a impedir que selecione elementos com filhos
/ ESCOPO: página
/ DEPENDENCIAS:
/ PARAMETROS:
*/
function OnClientEntryAdding(sender, args) {
var RadTree = args.get_entry().get_parent().get_embeddedTree();
qtdFilhos = RadTree.findNodeByValue(args.get_entry().get_value()).get_nodes().get_count();
if (qtdFilhos > 0)
args.set_cancel(true);
}
/*
/ DESCRICAO: Evento usado na RADDROPDOWNTREE de forma a impedir que selecione elementos sem pai
/ ESCOPO: página
/ DEPENDENCIAS:
/ PARAMETROS:
*/
function OnClientEntryAddingSemSelecaoDeRoot(sender, args) {
var RadTree2 = args.get_entry().get_parent().get_embeddedTree();
var nodeParent = RadTree2.findNodeByValue(args.get_entry().get_value()).get_parent().get_parent();
if (!nodeParent)
args.set_cancel(true);
}
/**
* Remove acentos de caracteres
* @param {String} stringComAcento [string que contem os acentos]
* @return {String} [string sem acentos]
*/
function removerAcentos(palavra) {
var palavraSemAcento = "";
var caracterComAcento = "áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ";
var caracterSemAcento = "aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC";
for (var i = 0; i < palavra.length; i++) {
var char = palavra.substr(i, 1);
var indexAcento = caracterComAcento.indexOf(char);
if (indexAcento != -1) {
palavraSemAcento += caracterSemAcento.substr(indexAcento, 1);
} else {
palavraSemAcento += char;
}
}
return palavraSemAcento;
}
//Métodos Para Manipulação de Cookies
function createCookie(name, value, days, domain) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
}
else var expires = "";
if (domain) {
var domainCookie = "; domain=" + domain;
}
document.cookie = name + "=" + value + domainCookie + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
function eraseCookie(name, domain) {
createCookie(name, "", -1, domain);
}
function limparCookieIsolamentoSessao() {
eraseCookie('IdentificadorSessao', '.puc-rio.br');
}
function setPanelSauAtivo() {
$(this).toggleClass("panel-sau-ativo", $(this).find(':focus').length);
}
function radioButtonParentSelection() {
$(".rbtn_sau input:not(:checked)").parent().removeClass("rbtnSelecionado");
$(".rbtn_sau input:checked").parent().addClass("rbtnSelecionado");
}
function postIdentificadorSessao() {
__doPostBack('form1', '');
}
function adicionarControleDuplicacaoAba() {
sessionStorage.setItem("checkTabDuplicada", "foo");
}
function verificarControleDuplicacaoAba(urlMenuPai) {
var bar = sessionStorage.getItem("checkTabDuplicada");
if (!bar) {
var formPagina = document.forms[0];
if (formPagina != null)
formPagina.style.display = "none";
chamaURL(urlMenuPai);
}
}
function prevenir_Enter_keypress(event)
{
if (event.which == 13) {
if ($(this).attr('type') === 'submit') {
event.preventDefault();
$(this).click();
}
else {
event.preventDefault();
}
}
}
function htmlDecode(input) {
var e = document.createElement('textarea');
e.innerHTML = input;
// handle case of empty input
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}